package top.lishuoboy.shiro02_springboot_jsp.service;

import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.*;
import org.springframework.stereotype.Service;

/**
 * @author lishuoboy
 * @date 2022/2/21 18:48
 */
@Slf4j
@Service
public class ShiroService {

    /** 1.1、 认证--认证通过或已记住的用户 */
    @RequiresUser
    public void requiresUser() {
        log.info("requiresUser");
    }

    /** 1.2、 认证--是访客 */
    @RequiresGuest
    public void requiresGuest() {
        log.info("requiresGuest");
    }

    /** 1.3、 认证--已认证通过的用户。不包含已记住的用户，这是与user标签的区别所在 */
    @RequiresAuthentication
    public void requiresAuthentication() {
        log.info("requiresAuthentication");
    }

    /** 2.1、 权限-角色判断--验证当前用户是否属于以下所有角色。 */
    @RequiresRoles({"admin", "user"})
    public void requiresRoles1() {
        log.info("requiresRoles1");
    }

    /** 2.2、 权限-角色判断--验证当前用户是否属于以下任意一个角色。 */
    @RequiresRoles(value = {"admin", "other"}, logical = Logical.OR)
    public void requiresRoles2() {
        log.info("requiresRoles2");
    }

    /** 3.1、 权限-权限判断--验证当前用户是否拥有以下所有权限。资源标识符:操作:资源类型 */
    @RequiresPermissions(value = {"user:*:01", "user:insert:02"})
    public void RequiresPermissions1() {
        log.info("RequiresPermissions1");
    }

    /** 3.2、 权限-权限判断--验证当前用户是否拥有以下任意一个权限。 */
    @RequiresPermissions(value = {"user:*:01", "user:insert:02"}, logical = Logical.OR)
    public void RequiresPermissions2() {
        log.info("RequiresPermissions2");
    }
}